使用EMR-CLI自定义部署Gateway环境

Gateway主要用于向计算集群提交任务和进行安全隔离。为了方便部署Gateway环境,E-MapReduce提供了名为EMR-CLI的工具,它基于阿里云ECS来创建实例并部署Gateway环境。当您创建了DataLake、DataFlow或OLAP类型的集群时,可以使用本文档来部署Gateway环境。

前提条件

已经在E-MapReduce中创建了业务场景为数据湖(DataLake)、实时数据流(DataFlow)或数据分析(OLAP)场景的计算集群,且计算集群状态为运行中。创建集群详情请参见创建集群

使用限制

  • 本文档仅适用于数据湖集群(DataLake)、实时数据流集群(DataFlow)和数据分析集群(OLAP)的Gateway环境部署。

    对于已存在的Hadoop集群和Kafka集群的Gateway环境部署,详情请参见创建Gateway集群

    说明

    如果您在2022年12月19日17点(UTC+8)以后第一次创建EMR集群,则不能选择Hadoop、Kafka集群类型。

  • 请勿使用EMR集群的ECS实例作为Gateway机器,以免影响计算集群运行环境。

  • EMR-CLI在部署Gateway客户端时采用覆盖安装模式。如果您已在ECS中部署了Gateway,则重新部署时会覆盖旧的客户端,并在同一目录下安装新的客户端。

  • 目前支持该方式部署Gateway的服务有HDFS、YARN、HBase、HIVE、SPARK2、SPARK3、JINDOSDK 、FLINK 、SQOOP、IMPALA 、PRESTO 、HUDI 、ICEBERG 、TEZ和DELTALAKE。

首次部署Gateway环境

  1. 在ECS控制台创建实例,详情请参见自定义购买实例

    说明

    创建的ECS实例可以不具备公网访问能力。

    相关参数推荐如下。

    参数

    说明

    地域及可用区

    必须与EMR集群所在地域和可用区一致。

    镜像

    必须与EMR实例的系统匹配。

    系统盘

    推荐使用ESSD云盘,不小于60 GiB。

    网络

    必须与EMR集群VPC一致。

    安全组

    必须与EMR集群的Master实例组安全组一致,保证ECS实例与EMR集群的网络互通。

  2. 构建EMR Gateway专用的ECS RAM角色。

    1. 使用RAM管理员登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

    3. 角色页面,单击创建角色

    4. 创建角色面板中,选择可信实体类型为阿里云服务,单击下一步

    5. 填写角色名称(例如ECSForEMRGatewayRole),在选择受信服务下拉列表中选择云服务器,然后单击完成

  3. 为RAM角色授权。

    1. 创建角色面板中,单击为角色授权

    2. 单击新增授权

    3. 新增授权面板中,选择系统策略中的AliyunEMRFullAccess、AliyunOSSFullAccess和AliyunDLFFullAccess,单击确认新增授权

      image.png

    4. 单击关闭

  4. 授予ECS实例RAM角色。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择实例与镜像 > 实例

    3. 在顶部菜单栏左上角处,选择地域。

    4. 找到新建的ECS实例,选择image > 实例设置 > 授予/收回RAM角色

    5. 在弹窗中,选择ECSForEMRGatewayRole角色,单击确定

  5. 连接ECS实例,详情请参见连接ECS实例

  6. 执行以下命令,安装EMR-CLI。

    regionId=`curl http://100.100.100.200/latest/meta-data/region-id`; curl https://ecm-repo-${regionId}.oss-${regionId}-internal.aliyuncs.com/emrcli/emrcli.sh -o /tmp/emrcli.sh; chmod 755 /tmp/emrcli.sh; sh /tmp/emrcli.sh install ${regionId}

    安装成功会返回以下信息。

    install emrcli success
  7. 执行以下命令,部署EMR Gateway客户端。

    emrcli gateway deploy \
      --clusterId <ClusterId> \
      --appNames <ApplicationName>

    您需要根据实际情况修改以下参数。

    参数

    是否必选

    描述

    clusterId

    在EMR上已创建集群的集群ID。

    appNames

    应用名称。有多个应用时,使用英文逗号(,)隔开,例如,HDFS,YARN

    未指定该参数时,默认为集群所有支持的客户端应用,例如Hive和HDFS。

    部署成功会返回以下信息。

    deployGateway success
    重要

    Gateway安装后,系统环境变量中的JAVA_HOME会调整为/usr/lib/jvm/java-1.8.0 。您可以在/etc/profile.d/emr_env.sh文件中修改,但修改后可能影响Gateway功能,因此请谨慎操作。

  8. 重新登录ECS实例,使得系统环境变量生效。

  9. 可选:配置Gateway节点的域名解析。

    重要

    Gateway包含Spark服务时须执行该步骤。

    1. 添加Zone,详情请参见添加内置权威域名

    2. 添加解析记录,详情请参见添加解析记录

      涉及参数如下表所示。

      参数

      说明

      记录类型

      使用默认的A

      主机记录

      填写Gateway机器的hostname。例如,iZ2zea8r0aht2vzbqci****。

      您可以通过命令hostname获取。

      记录值

      填写Gateway机器的内网IP地址。

      您可以在节点管理页面查看。

      TTL值

      使用默认值。

管理Gateway环境

Gateway创建完成后,如果Gateway关联的计算集群进行了服务的新增或服务配置的更改,您可以通过以下命令更新客户端组件或同步最新配置。

更新客户端组件

当计算集群服务新增时,通过EMR CLI在Gateway上新增对应的客户端。

命令和初次部署基本相同,只需在appNames参数中注明对应新增的应用名称,已安装应用不会受到影响。

emrcli gateway deploy \
  --clusterId <ClusterId> \
  --appNames <ApplicationName>

更新成功后返回以下信息。

deployGateway success

同步EMR集群修改后的配置

通过EMR CLI同步EMR集群修改后的应用配置(例如core-site.xml等)到Gateway客户端。

重要

同步配置时会覆盖Gateway上的配置,因此请谨慎操作。

emrcli gateway refreshConfigs \
  --clusterId <ClusterId> \
  --appNames <ApplicationName>

同步成功后返回以下信息。

refreshConfiguration success

管理EMR-CLI

查看EMR CLI版本

您可以通过以下命令来查看EMR CLI的版本信息。

emrcli version

返回以下类似信息。

2.0.0

升级EMR CLI

重新执行首次部署Gateway环境中安装EMR CLI的步骤,会自动升级至最新版本。

常见问题

Q:如何切换计算集群?

A:切换计算集群的步骤如下:

  1. 使用-mv命令手动备份旧集群(切换前集群)中的文件,包括/opt/apps目录、/etc/taihao-apps目录以及/etc/profile.d/yarn.sh文件,以防止数据丢失。

  2. 重新执行本文中的操作,进行计算集群的重新部署。